/* 
  可以使用二分查找发查找
  1-11的速度区间中，它所对应花费的时间是单调递减的（有序），所有可以使用二分查找法查找
*/
// 计算出当速度是k时，吃完这堆香蕉需要的时间
const eatingHours = (piles, k) => {
  let res = 0;
  piles.forEach((p) => {
    res += Math.ceil(p / k);
  });
  return res;
};

var minEatingSpeed = function (piles, h) {
  let l = 1;
  let r = piles.sort((a, b) => a - b)[piles.length - 1];
  // 1-11 花费市场单调递减 10 8 7 6；
  while (l < r) {
    const mid = l + Math.floor((r - l) / 2);
    if (eatingHours(piles, mid) <= h) {
      // 刚好吃到，需要缩小范围
      r = mid;
    } else {
      l = mid + 1;
    }
  }
  return l;
};
var arr = [30, 11, 23, 4, 20];
console.log(arr.sort((a, b) => a - b)[5 - 1]);
console.log(eatingHours(arr, 30))
